#ifndef _NE_MD2_MODEL_H_
#define _NE_MD2_MODEL_H_

#include <mathematics/Vector2.h>
#include <mathematics/Node.h>
#include <graphics/Texture.h>

namespace ne
{
    class MD2Model
    {
        public:
            typedef std::vector<Vector3> VertexList;
            typedef std::vector<Vector3> NormalList;
            typedef std::vector<Vector2> TexCoordList;
            typedef std::vector<uint32_t> IndexList;

        protected:
            VertexList *m_pVertexList;
            NormalList *m_pNormalList;
            TexCoordList *m_pTexCoordList;
            IndexList *m_pVertexIndexList;
            IndexList *m_pNormalIndexList;
            IndexList *m_pTexCoordIndexList;
            Texture* m_pTexture;
            uint32_t m_iFrameNum;
            uint32_t m_iFrameSize;

        public:
            MD2Model();

            void setVertexList(VertexList *list);

            VertexList* getVertexList() const;

            void setNormalList(NormalList *list);

            NormalList* getNormalList() const;

            void setTexCoordList(TexCoordList *list);

            TexCoordList* getTexCoordList() const;

            void setVertexIndexList(IndexList *list);

            IndexList* getVertexIndexList() const;

            void setNormalIndexList(IndexList *list);

            IndexList* getNormalIndexList() const;

            void setTexCoordIndexList(IndexList *list);

            IndexList* getTexCoordIndexList() const;

            void setTexture(Texture* const texture);

            Texture* getTexture() const;

            void setFrameNum(const uint32_t n);

            uint32_t getFrameNum() const;

            void setFrameSize(const uint32_t n);

            uint32_t getFrameSize() const;

            uint32_t getVertexAmount() const;

            uint32_t getNormalAmount() const;

            uint32_t getTexCoordAmount() const;

            uint32_t getTriangleAmount() const;

            virtual ~MD2Model();
    };
}
#endif

